package com.ark.cloud.java.persistence.service.impl;


import com.ark.cloud.java.persistence.entity.*;
import com.ark.cloud.java.persistence.mapper.*;
import com.ark.cloud.java.persistence.service.PlatStateService;
import com.ark.cloud.java.persistence.utils.UUIDUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author fukun
 * @create 2021/8/31  下午4:17
 * @description
 */
@Service
public class PlatStateServiceImpl extends ServiceImpl<PlatStateMapper, PlatState> implements PlatStateService {

    @Autowired
    EntityTypeMapper entityTypeDao;

    @Autowired
    Vec3DMapper vec3DDao;

    @Autowired
    EulerAngleMapper eulerAngleMapper;

    @Autowired
    Vec3FMapper vec3FDao;

    @Autowired
    PlatStateMapper platStateDao;

    @Override
    public void savePlatStateInfo(PlatState platState) {

        //设置主键
        platState.setPlatStateId(UUIDUtil.next());


        System.out.println("platState:"+platState);

        // entity_type表插入
        EntityType entityType = platState.getType();


//        随机生成ID
        entityType.setId(UUIDUtil.next());
        System.out.println("entityType:"+entityType);
        entityTypeDao.insert(entityType);

        Long typeId = entityType.getId();

        // euler_angle表插入
        EulerAngle eulerAngle = platState.getOri();

        //        随机生成ID
        eulerAngle.setId(UUIDUtil.next());
        eulerAngleMapper.insert(eulerAngle);
        Long eulerAngleId = eulerAngle.getId();

        // vec_threed表插入
        Vec3D vec3D = platState.getPos();
        //        随机生成ID
        vec3D.setId(UUIDUtil.next());
        vec3DDao.insert(vec3D);
        Long vec3DId = vec3D.getId();

        // vec_threef表插入
        Vec3F vec3F = platState.getVel();
        //        随机生成ID
        vec3F.setId(UUIDUtil.next());
        vec3FDao.insert(vec3F);

        Long vec3FId = vec3F.getId();

        // plat_state表插入

        platState.setTypeId(typeId);
        platState.setAngleId(eulerAngleId);
        platState.setVectedId(vec3DId);
        platState.setVectefId(vec3FId);

        platStateDao.savePlatStateInfo(platState);


    }
}
